import { IPSModelSortable } from '../../ipsmodel-sortable';
import { IPSDataEntityObject } from '../ipsdata-entity-object';
import { IPSDEFGroupDetail } from './ipsdefgroup-detail';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEFGroup
 */
export interface IPSDEFGroup extends IPSDataEntityObject, IPSModelSortable {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 代码名称2
   * @type {string}
   */
  codeName2: string;

  /**
   * 分组标记
   * @type {string}
   */
  groupTag: string;

  /**
   * 分组标记2
   * @type {string}
   */
  groupTag2: string;

  /**
   * 属性组类型
   * @description 值模式 [属性组类型] {FIELDS：指定属性、 FORMITEMS：表单项、 BASEFIELDS：基础属性、 AUDITFIELDS：审计属性 }
   * @type {( string | 'FIELDS' | 'FORMITEMS' | 'BASEFIELDS' | 'AUDITFIELDS')}
   */
  groupType: string | 'FIELDS' | 'FORMITEMS' | 'BASEFIELDS' | 'AUDITFIELDS';

  /**
   * 逻辑模式
   * @description 值模式 [属性组逻辑模式] {SORT：属性值排序、 NOTSAME：属性值差异、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
   * @type {( string | 'SORT' | 'NOTSAME' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
   */
  logicMode: string | 'SORT' | 'NOTSAME' | 'USER' | 'USER2' | 'USER3' | 'USER4';

  /**
   * 逻辑参数
   * @type {string}
   */
  logicParam: string;

  /**
   * 逻辑参数2
   * @type {string}
   */
  logicParam2: string;

  /**
   * 属性组成员集合
   *
   * @type {IPSDEFGroupDetail[]}
   */
  getPSDEFGroupDetails(): IPSDEFGroupDetail[] | null;

  /**
   * 属性组成员集合
   *
   * @type {IPSDEFGroupDetail[]}
   */
  get psDEFGroupDetails(): IPSDEFGroupDetail[] | null;

  findPSDEFGroupDetail(objKey: any): IPSDEFGroupDetail | null;
}
